#ifndef __ADMIN_API_H
#define __ADMIN_API_H
#include "public.h"
#include <string.h>
/* 
 * @func 管理员的登录请求   cmd = 0x10
 * @para int sockfd                 要连接的服务器sockid
 * @para login_info_TypeDef *data   登陆信息:用户名、密码
 * @return   0:登陆成功
 *          -1:登陆失败
 *          -2:参数错误
 *          -3:发送错误
 *          -4:接收错误
 */
int staff_admin_login(int sockfd, char usermode, char *name,char *pwd);

/* 
 * @func 管理员 添加员工信息 cmd = 0x20；
 * @para int sockfd                 要连接的服务器sockid
 * @para staff_info_TypeDef *data   要添加的员工信息
 * @return   0：添加成功
 *          -1：添加失败
 *          -2:参数错误
 *          -3:发送错误
 *          -4:接收错误
 */
int staff_admin_add(int sockfd, char usermode, staff_info_TypeDef *data);

/* 
 * @func 管理员根据姓名查找员工信息 cmd:0x51
 *          没有考虑重名的情况，认为没有重名
 * @para int sockfd   要连接的服务器sockid
 * @para char *name   要查找的姓名
 * @para staff_info_TypeDef *info_o 用于保存员工信息的地址
 * @return   0：添加成功
 *          -1：添加失败
 *          -2:参数错误
 *          -3:发送错误
 *          -4:接收错误
 */
int staff_admin_find_By_name(int sockfd, char usermode, char *name,staff_info_TypeDef *info_o);

/* 
 * @func 管理员查找所有员工信息 cmd:0x52
 * @para int sockfd                    要连接的服务器sockid
 * @para staff_info_TypeDef **info_o   保存查找到的结果：结构体指针数组
 * @pata int *num                      保存查找到的个数
 * @return   0: 查找成功
 *          -1: 查找失败
 *          -2: 参数错误
 *          -3: 发送错误
 *          -4: 接收错误
 */
int staff_admin_find_all(int sockfd, char usermode,  staff_info_TypeDef **info_o, int *num);

/* 
 * @func 管理员根据工号修改员工信息
 * @para int sockfd                 要连接的服务器sockid
 * @para char flag                  要修改信息的标志位：0x40 修改姓名
 *                                                   0x41 修改年龄
 * @para staff_info_TypeDef *data   要修改的员工信息
 * @return   0：修改成功
 *          -1：修改失败
 *          -2:参数错误
 *          -3:发送错误
 *          -4:接收错误
 */
int staff_admin_modify(int sockfd,char usermode,char cmd,staff_info_TypeDef *data) ;

/* 
 * @func 管理员删除员工信息
 * @para int sockfd                 要连接的服务器sockid                                           0x41 修改年龄
 * @para int  id                    要删除的id号
 * @para char *name                 要删除的姓名
 * @return   0：删除成功
 *          -1：删除失败
 *          -2:参数错误
 *          -3:发送错误
 *          -4:接收错误
 */
int staff_admin_del_by_id(int sockfd,char usermode, int id,char *name) ;

/* 
 * @func 管理员查找历史信息 cmd:0x70
 * @para int sockfd                    要连接的服务器sockid
 * @para staff_info_TypeDef **info_o    保存查找到的结果：结构体指针数组
 * @pata int *num                       保存查找到的个数
 * @return   0: 查找成功
 *          -1: 查找失败
 *          -2: 参数错误
 *          -3: 发送错误
 *          -4: 接收错误
 */
int staff_admin_find_history(int sockfd,char usermode);
#endif
